package com.zsj.juc.thread;

/**
 * @author <a href="https://gitee.com/zhengshengjun">zsj</a>
 * @date 2023/12/4.
 * <p>
 * synchronized 是java中的一个关键字 用于实现同步机制 <br/>
 * 可以修饰代码块<br/>
 * 可以修饰一个方法<br/>
 * 可以修饰静态方法<br/>
 * 修改一个类<br/>
 */
public class SynchronizedTest {
    public static void main(String[] args) {
        /*
        用户线程和守护线程
        用户线程是值正常运行的线程  而守护线程类似与秘书
        如果用户线程死亡  守护线程也会跟着死亡
        反之用户线程存活  守护线程也会活着
         */
        Thread t1 = new Thread(() -> {
            System.out.println("t1线程开始");
            System.out.println(Thread.currentThread().isDaemon() ? "t1:" + "守护线程" : "t1:" + "用户线程");
            while (true) {
                //无限执行
            }
        }, "t1");
        t1.setDaemon(true);//设置为守护线程
        t1.start();
        System.out.println(Thread.currentThread().isDaemon() ? "守护线程" : "用户线程");
        System.out.println(Thread.currentThread().getState());
    }

    /**
     * synchronized修饰的方法会变为同步方法
     */
    public synchronized void f() {


    }

}
